package com.company.JUC.AQS.Exchanger;

import java.util.concurrent.Exchanger;
import java.util.concurrent.TimeUnit;

/**
 * @Classname MyCircularQueue
 * @Description TODO    线程间交换数据的工具Exchanger
 *
 * Exchanger是一个用于线程间协作的工具类，用于两个线程间交换数据。
 * 它提供了一个交换的同步点，在这个同步点两个线程能够交换数据。
 * 交换数据是通过exchange方法来实现的，如果一个线程先执行exchange方法，
 * 那么它会同步等待另一个线程也执行exchange方法，
 * 这个时候两个线程就都达到了同步点，两个线程就可以交换数据。
 * @Date 2021/8/18 19:42
 * @Created by ylr
 */
public class Main {
    private static Exchanger<String> exchanger = new Exchanger<>();

    public static void main(String[] args) {
        new Thread(()->{

            try {
                String a = exchanger.exchange("我是线程A........");
                System.out.println("A  :"+a);


            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }).start();


        new Thread(()->{

            try {
                System.out.println("女生慢慢的从教室你走出来......");
                TimeUnit.SECONDS.sleep(3);
                String b = exchanger.exchange("我是线程B........");
                System.out.println("B  :"+b);


            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        }).start();

    }



}
